package capaPersistencia;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import data.ProductoVO;

/**
 * Clase que tiene los metodos para trabajar con productos: Insertar, eliminar y modificar productos
 * una vez se inserta,borra o modifica el producto tambien se tendra que insertar,borra o modifica
 *  en Ropa,LibroPeli o Coleccionables tambien existen estos metodos.
 */
public class ModuloProductos implements Persistencia{
	
	
	public boolean insertarProductoRopa(ProductoVO producto)  {    

		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();
			return productoDAO.insertarProductoRopa(producto,connection);  
			} catch (Exception e) {
			e.printStackTrace(System.err);
			return false;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return false;
				}
			}
		} 
	public boolean insertarProductoLibroPeli(ProductoVO producto)  {    

		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();
			return productoDAO.insertarProductoLibroPeli(producto,connection);  
			} catch (Exception e) {
			e.printStackTrace(System.err);
			return false;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return false;
				}
			}
		} 
	public boolean insertarProductoColeccionables(ProductoVO producto)  {    

		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();
			return productoDAO.insertarProductoColeccionables(producto,connection);  
			} catch (Exception e) {
			e.printStackTrace(System.err);
			return false;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return false;
				}
			}
		} 
	public boolean eliminarProducto(String id) {    
        Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();
			return productoDAO.eliminarProducto(id,connection);
			

		} catch (Exception e) {
			e.printStackTrace(System.err);
			return false;
		} finally{
			try {
				connection.close();
			} catch (Exception e) {
				return false;
			}
		}

	}
	
	
	public boolean modificarProductosRopa(ProductoVO producto)  {    
		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();
			return productoDAO.modificarProductoRopa(producto, connection);  
			} catch (Exception e) {
			e.printStackTrace(System.err);
			return false;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return false;
				}
			}
		} 
	public boolean modificarProductosLibroPeli(ProductoVO producto)  {    
		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();
			return productoDAO.modificarProductoLibroPeli(producto, connection);  
			} catch (Exception e) {
			e.printStackTrace(System.err);
			return false;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return false;
				}
			}
		} 
		
	public boolean modificarProductosColeccionables(ProductoVO producto)  {    
		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();
			return productoDAO.modificarProductoColeccionables(producto, connection);  
			} catch (Exception e) {
			e.printStackTrace(System.err);
			return false;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return false;
				}
			}
		} 
	public ProductoVO obtenerProducto(String id)  {    

		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();

			return productoDAO.obtenerProducto(id, connection);  
			 


		} catch (Exception e) {
			e.printStackTrace(System.err);
			return null;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return null;
				}
			
		}
	}
	public ArrayList<ProductoVO> obtenerProductos(String tipo)  {    

		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();

			return productoDAO.obtenerProductos(tipo, connection);  
			 


		} catch (Exception e) {
			e.printStackTrace(System.err);
			return null;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return null;
				}
			
		}
	}
	public ArrayList<ProductoVO> obtenerProductosPrecio(double precio)  {    

		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();

			return productoDAO.obtenerProductosPrecio(precio, connection);  
			 


		} catch (Exception e) {
			e.printStackTrace(System.err);
			return null;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return null;
				}
			
		}
	}
	
	public ArrayList<ProductoVO> obtenerProductosNombre (String n){
		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();

			return productoDAO.obtenerProductosNombre(n,connection);  
			 


		} catch (Exception e) {
			e.printStackTrace(System.err);
			return null;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return null;
				}
			
		}
	}
	public ArrayList<ProductoVO> ordenarProductosPrecio()  {    

		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();

			return productoDAO.ordenarProductosPrecio( connection);  
			 


		} catch (Exception e) {
			e.printStackTrace(System.err);
			return null;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return null;
				}
			
		}
	}
	
	public ArrayList<ProductoVO> ordenarProductosTipo()  {    

		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();

			return productoDAO.ordenarProductosTipo( connection);  
			 


		} catch (Exception e) {
			e.printStackTrace(System.err);
			return null;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return null;
				}
			
		}
	}
	public ArrayList<ProductoVO> ordenarProductosNombre()  {    

		Connection connection = null;
		try{
			connection = GestorConexiones.getConnection();
			ProductoDAO productoDAO = new ProductoDAO();

			return productoDAO.ordenarProductosNombre( connection);  
			 


		} catch (Exception e) {
			e.printStackTrace(System.err);
			return null;
		} finally{
			
				try {
					connection.close();
				} catch (SQLException e) {
					
					return null;
				}
			
		}
	}

}
